home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / tpschk11.zip / SELFCHK.DOC < prev    next >
Text File  |  1990-02-05  |  9KB  |  231 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.                            -------------------------
  21.                              The SelfChk Unit v1.1
  22.                            -------------------------
  23.                     Source code for Borland's Turbo Pascal.
  24.          Add CRC Anti-Hack/Viral Protection to Turbo Pascal Programs.
  25.  
  26.                          (C) 1990 by Michael S. Durkin
  27.                        Released as ShareWare, 02/05/1990.
  28.  
  29.  
  30.  
  31.   Purpose
  32.   ~~~~~~~
  33.  
  34.          The SelfChk Unit for  Borland International's  Turbo Pascal v4.0+
  35.      allows your programs  written in Turbo Pascal to compute the CCITT 16
  36.      bit Cyclical Redundancy Check (CRC) of themselves at runtime to check
  37.      for changes to the program executable.
  38.      
  39.          For the relatively small  amount of time used to  compute the CRC
  40.      value each time  your program is executed,  the self check provides a
  41.      fairly  effective method  for detecting hacks,  software viruses,  or
  42.      disk corruption at a generic level.  If a change is detected, you may
  43.      handle it any way you wish.
  44.      
  45.          Full source code  is provided for  compilation under  versions of
  46.      Borland's Turbo Pascal 4.0, 5.0, 5.5, and future releases.  The source
  47.      ( SelfChk.Pas ) is  commented  for any  details.  This document is to
  48.      explain the basic steps for adding a SelfChk to your programs, and to
  49.      note certain considerations for this unit's usage.
  50.  
  51.  
  52.  
  53.   The Shareware Principle - Registration
  54.   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  55.  
  56.          This has been released under the Shareware  principle so that you
  57.      may 'try before  you buy'.   If you  continue to  use this unit, or a
  58.      modified version of it,  you are obliged to register.
  59.      
  60.          HOWEVER,  I will  not demand a  registration  unless you  receive
  61.      compensation for  your work.  If  you write  your  program  for  your
  62.      private use only,  or for Public Domain or  Freeware release  and are
  63.      not compensated,  you aren't required to  register and are encouraged
  64.      to continue to use the SelfChk Unit in your programs. ( Of course, if
  65.      you want to register, I won't stop you. )
  66.      
  67.         Shareware authors...  you are not required to register the SelfChk
  68.      Unit UNTIL you receive  registrations for your program that cover The
  69.      SelfChk Unit's  registration twofold.   If you never receive monetary
  70.      compensation  for your work, then you  aren't forced to register this
  71.      unit.
  72.  
  73.  
  74.  
  75.  
  76.   Registration :
  77.  
  78.          Basic Registration                                $ 12.00
  79.  
  80.          Additional Shareware Program Releases             $  5.00  *
  81.  
  82.          SchkInst Source License                   Basic + $ 15.00  **
  83.  
  84.  
  85.    *    Shareware  author's  who release  more than one program  using The
  86.      SelfChk Unit are  requested to  register an  additional  $5  for each
  87.      program  once the program  has generated registrations of three times
  88.      the $5 registration ($15).   A new version of an old program does not
  89.      require an additional $5.
  90.  
  91.   **    The source code for the  SchkInst CRC installation  program is not
  92.      included in the  shareware release of  this unit but  is available to
  93.      registered users of this unit for an additional $15.
  94.  
  95.  
  96.      Please send registrations, bug reports, and suggestions for
  97.         improvements to :
  98.  
  99.  
  100.                Mike Durkin          The TeleSoft RBBS-PC
  101.                P.O. Box 1021        Data: (415) 969-8238
  102.                Mt. View, CA          Four Lines (CAPAL)
  103.                    94042-1021       FidoNet: (1:143/204)
  104.  
  105.  
  106.         Checks to :   Mike Durkin please.
  107.  
  108.  
  109.         SchkInst Source Licenses  may be picked up  from the TeleSoft RBBS
  110.      approximately  one week  after your  registration  arrives.  Just log
  111.      into the BBS and leave a message to  'Sysop'.  Should you require, an
  112.      SchkInst  Source License can be mailed to you for an additional $5 to
  113.      cover shipping.  Please note in your registration that you'd like the
  114.      disk mailed.  All registrants  can expect an acknowledgment and thank
  115.      you via U.S. Mail.
  116.  
  117.         Should  you have  trouble  reaching  The  TeleSoft  RBBS, I can be
  118.      reached through  Midnight  Express  in Santa Clara, CA. at (408) 248-
  119.      2352. E-Mail:  Mike Durkin.
  120.  
  121.  
  122.  
  123.   Distribution, Rights, and Legalities
  124.   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  125.  
  126.         The  SelfChk  Unit  and  this  documentation is  CopyRight 1990 by
  127.      Michael S. Durkin and may be distributed in it's original state only.
  128.      All files must remain intact, and grouped together without additional
  129.      files.  You may  NOT distribute  modified source code.  Do not modify
  130.      or remove this or any other notice.
  131.     
  132.         If  you  distribute  source  code  with  your  software,  you  may
  133.      distribute the  SelfChk  package within  your ZIP/LZH/etc. or on your
  134.      distribution disk in it's own  ZIP/LZH/etc. or in a separate  subdir-
  135.      ectory.  You  must make it  clear that this  unit requires a separate
  136.      registration.
  137.  
  138.  
  139.         The SelfChk Unit  may  NOT  be used  in a commercial  product,  or
  140.      a ShareWare  product  released  with a  number of  features  disabled
  141.      ( CrippleWare ) or not readily available to anyone who desires to try
  142.      the software.
  143.  
  144.         This unit is  provided  without  warranty  expressed  or  implied.
  145.      Should damage  result from  your use of this software, I can't assume
  146.      responsibility and will not be held liable.
  147.  
  148.  
  149.  
  150.   Quick and Simple Installation
  151.   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  152.  
  153.   There are Five easy steps to adding a SelfChk to your program...
  154.  
  155.    a)  Compile SELFCHK.PAS and CRC_GEN.INC to SelfChk.Tpu.
  156.    
  157.    b)  Place 'SelfChk' in your program's 'Uses' statement.
  158.        ( ie.  Uses SelfChk, Crt, Dos; )
  159.    
  160.    c)  Place a call to the procedure  'ChkIntegrity' near the beginning of
  161.        your program,  preferably just after  an introduction  line to your
  162.        program, or even as the first procedure call.
  163.    
  164.    d)  Compile your program.
  165.  
  166.    e)  Execute the SchkInst program  against your freshly compiled execut-
  167.        able with the command line 'SCHKINST filename'.
  168.  
  169.         That's all there is too it!  Any modifications  to your executable
  170.     will display  two beeps,  a warning  message,  and halt the  program's
  171.     execution.
  172.  
  173.  
  174.  
  175.   Special Considerations
  176.   ~~~~~~~~~~~~~~~~~~~~~~
  177.  
  178.         There aren't many desirable  modifications for you to perform, but
  179.      source code is provided  if you wish to do so.   Most likely you will
  180.      modify the  ChkIntegrity procedure.  Notes on what not to  change are
  181.      commented within the source, particularly the data signature that the
  182.      SchkInst program looks for when installing the CRC value.
  183.  
  184.         A call to 'DoSelfChk' performs the actual CRC computation and sets
  185.      the SelfChkResult  variable with  the result of the SelfChk.  You can
  186.      then examine this  variable  as the  ChkIntegrity procedure  does and
  187.      take appropriate action.
  188.  
  189.  
  190.         The procedure 'UpdSelfChkData' is provided  if you modify your own
  191.      program at runtime,  usually to change  configuration data.  There is
  192.      little error checking  within the procedure,  but a call to DoSelfChk
  193.      just prior to  modifying your program and then calling UpdSelfChkData
  194.      should provide  adequate security.  You could add error checking, but
  195.      if the update fails after  you've made your modifications, it will do
  196.      no good unless  you can recover  and finish the update  or 'undo' the
  197.      modifications.
  198.  
  199.         You can  modify the  ChkIntegrity procedure  to allow for  program
  200.      execution to continue  after the warning message,  however be careful
  201.      when  also using  the UpdSelfChkData  procedure as  updating  the CRC
  202.      of a hacked, infected, or  corrupt file defeats  the purpose.  Always
  203.      execute  DoSelfChk  prior to  updating your  executable ( and calling
  204.      the CRC  update  procedure )  to ensure  that the  self check  passes
  205.      ( SelfChkResult = 0 ).
  206.  
  207.  
  208.  
  209.   Special Notes
  210.   ~~~~~~~~~~~~~
  211.   
  212.         Although the  security of a CRC is very high,  especially compared
  213.      to no  protection  at all,  it is  possible to defeat the purpose.  A
  214.      good  hacker could  disable the SelfChk  altogether,  and there is at
  215.      least one virus ( the 4096 ) that defeats all generic self checks and
  216.      CheckSum / CRC anti-viral methods I know of with more probably on the
  217.      way.  The SelfChk Unit  does however provide  protection  against the
  218.      inexperienced hacker,  and most known  viruses including  those which
  219.      have presented  the largest  problems and  continue to do so.  Future
  220.      releases will hopefully address the 4096 virus and others that follow
  221.      suit.
  222.  
  223.         I suggest not  noting that  a self check  is occurring within your
  224.      program until it fails the test.  Note within your documentation yes,
  225.      but not during runtime.  This so as not to provide a bloated sense of
  226.      security to the user.
  227.  
  228.         Thanks for  using  the SelfChk Unit!   And in case  you missed it,
  229.      contact information can be found above.
  230.  
  231.